package com.xiaoshuidi.cloud.module.contract.dal.dataobject.contract;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaoshuidi.cloud.framework.tenant.core.db.TenantBaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 合同退租 续租 延期审批
 * </p>
 *
 * @author Feng
 * @since 2023-07-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("contract_apply")
public class ContractApplyDO extends TenantBaseDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 合同申请id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 合同id
     */
    private Long contractId;

    /**
     * 申请类型 退租申请 1| 续租申请 2|延期申请 3
     */
    private String applyType;

    /**
     * 公寓id
     */
    private Long apartmentId;

    /**
     * 公寓名称
     */
    private String apartmentName;

    /**
     * 房间id
     */
    private Long roomId;

    /**
     * 房间名称
     */
    private String roomName;

    /**
     * 原合同开始时间
     */
    private LocalDate sourceStartTime;

    /**
     * 原合同结束时间
     */
    private LocalDate sourceEndTime;

    /**
     * 开始时间 续租：周期开始时间
     */
    private LocalDate startTime;

    /**
     * 结束时间 续租：周期结束时间 | 退租：申请退租时间 | 延期：到期时间
     */
    private LocalDate endTime;

    /**
     * 租客ID
     */
    private Long memberId;

    /**
     * 租客姓名
     */
    private String customerName;

    /**
     * 租客手机号
     */
    private String customerPhone;

    /**
     * 申请状态 1 审批中 |2 已通过| 3已驳回 |4 取消 | 5 待生效
     */
    private String applyStatus;

    /**
     * 月租金 续租:月租金 延期: 日租金
     */
    private BigDecimal monthRent;

    /**
     * 总租金 续租: 总租金 | 延期：总费用
     */
    private BigDecimal totalRent;

    /**
     * 月物业费
     */
    private BigDecimal property;

    /**
     * 总物业费
     */
    private BigDecimal totalProperty;

    /**
     * 合计费用
     */
    private BigDecimal allTotal;

    /**
     * 申请时间
     */
    private LocalDateTime applyTime;

    /**
     * 审核时间
     */
    private LocalDateTime auditTime;

    /**
     * 退租类型 1 到期退租 2提前退租
     */
    private String rentingType;

    /**
     * 延期需要生成账单, 账单ID
     */
    private Long rentOrderId;

    /**
     * 延期：账单编号
     */
    private String rentOrderNo;

    /**
     * 审核人
     */
    private String reviewedBy;

    /**
     * 审核人手机号
     */
    private String reviewedPhone;

    /**
     * 续租周期3 6 12 | 延期天数
     */
    private Integer cycle;


}
